home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / GRAPHICS / SCGRAPH / AXES.PAS < prev    next >
Pascal/Delphi Source File  |  1996-11-07  |  6KB  |  227 lines

  1. unit Axes;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, ScGraph, Menus, StdCtrls;
  8.  
  9. type
  10.   TAxesForm = class(TForm)
  11.     MainMenu1: TMainMenu;
  12.     File1: TMenuItem;
  13.     Close1: TMenuItem;
  14.     Printersetup1: TMenuItem;
  15.     Print1: TMenuItem;
  16.     N1: TMenuItem;
  17.     Exit1: TMenuItem;
  18.     Edit1: TMenuItem;
  19.     Copygraph1: TMenuItem;
  20.     Mouse1: TMenuItem;
  21.     ScGraph1: TScGraph;
  22.     Scaling1: TMenuItem;
  23.     Moving1: TMenuItem;
  24.     Label1: TLabel;
  25.     Label2: TLabel;
  26.     Drawing1: TMenuItem;
  27.     Autometrics1: TMenuItem;
  28.     Help1: TMenuItem;
  29.     procedure Close1Click(Sender: TObject);
  30.     procedure Printersetup1Click(Sender: TObject);
  31.     procedure Print1Click(Sender: TObject);
  32.     procedure Copygraph1Click(Sender: TObject);
  33.     procedure FormCreate(Sender: TObject);
  34.     procedure Exit1Click(Sender: TObject);
  35.     procedure Scaling(Sender: TObject);
  36.     procedure ScGraph1MouseDown(Sender: TObject; Button: TMouseButton;
  37.       Shift: TShiftState; X, Y: Integer);
  38.     procedure ScGraph1MouseUp(Sender: TObject; Button: TMouseButton;
  39.       Shift: TShiftState; X, Y: Integer);
  40.     procedure Moving1Click(Sender: TObject);
  41.     procedure ScGraph1MouseMove(Sender: TObject; Shift: TShiftState; X,
  42.       Y: Integer);
  43.     procedure Drawing1Click(Sender: TObject);
  44.     procedure Autometrics1Click(Sender: TObject);
  45.     procedure Help1Click(Sender: TObject);
  46.     procedure FormDestroy(Sender: TObject);
  47.   private
  48.     { Private declarations }
  49.   public
  50.     { Public declarations }
  51.   end;
  52.  
  53. var
  54.   AxesForm: TAxesForm;
  55.   AxesText: TStringList;
  56.  
  57. implementation
  58.  
  59. uses DemoMain, Help;
  60.  
  61. {$R *.DFM}
  62.  
  63. const
  64.   ScaleMode: boolean = false;
  65.   DrawMode : boolean = false;
  66.  
  67. var
  68.   XX1, YY1, XX2, YY2, MinXX, MaxXX, MinYY, MaxYY: double;
  69.  
  70. procedure TAxesForm.Close1Click(Sender: TObject);
  71. begin
  72.   DemoForm.CloseWindow1Click(Self);
  73. end;
  74.  
  75. procedure TAxesForm.Printersetup1Click(Sender: TObject);
  76. begin
  77.   DemoForm.PrinterSetupDialog1.Execute;
  78. end;
  79.  
  80. procedure TAxesForm.Print1Click(Sender: TObject);
  81. begin
  82.   ScGraph1.PrintGraph(-1, -1, 140, 120);
  83. end;
  84.  
  85. procedure TAxesForm.Copygraph1Click(Sender: TObject);
  86. begin
  87.   ScGraph1.CopyGraphToClipboard;
  88. end;
  89.  
  90. procedure TAxesForm.FormCreate(Sender: TObject);
  91. var i: integer;
  92. begin
  93.   with ScGraph1 do
  94.   begin
  95.     Plotting := false;
  96.  
  97.     SetSeries(1, true, true, clNavy, '---');
  98.     AddPoint(1, 0, 1);
  99.     for i := 1 to 100 do
  100.     begin
  101.       AddPoint(1, i/10, sin(i/2)/i*2);
  102.       AddPoint(1, -i/10, sin(i/2)/i*2);
  103.     end;
  104.     SetSeriesLine(1, true, pmLine, 2, psSolid);
  105.  
  106.     SetSeries(2, true, true, clRed, '');
  107.     SetSeriesLine(2, true, pmLine, 2, psDot);
  108.     SetSeriesPoints(2, true, psTriangleUp, 10);
  109.     Scaling(Self);
  110.     Plotting := true;
  111.   end;
  112.  
  113.   AxesText := TStringList.Create;
  114.   with AxesText do begin
  115.    Add(' Edit  : Copy Graph - copies graph to clipboard');
  116.    Add('         Autometrics- autoadjust various sizes,');
  117.    Add('         line widths and distances');
  118.    Add(' Mouse : ');
  119.    Add('    - Scaling: clicking and dragging the mouse ');
  120.    Add('         changes both x- and y-scale factors   ');
  121.    Add('    - Moving : clicking and dragging the mouse ');
  122.    Add('         moves the plot                        ');
  123.    Add('    - Drawing: clicking the mouse button draws ');
  124.    Add('         symbols and lines on the plot         ');
  125.    Add(' ');
  126.    Add('  (see also ScGraph.txt for further properties)');
  127.   end;
  128. end;
  129.  
  130. procedure TAxesForm.FormDestroy(Sender: TObject);
  131. begin
  132.   AxesText.Free;
  133. end;
  134.  
  135. procedure TAxesForm.Exit1Click(Sender: TObject);
  136. begin
  137.   DemoForm.Exit1Click(Self);
  138. end;
  139.  
  140. procedure TAxesForm.Scaling(Sender: TObject);
  141. begin
  142.   Scaling1.Checked:= true;
  143.   Moving1.Checked:= false;
  144.   Drawing1.Checked:= false;
  145.   ScaleMode:= true;
  146.   DrawMode:= false;
  147.   ScGraph1.Cursor:= crSizeNESW;
  148. end;
  149.  
  150. procedure TAxesForm.Moving1Click(Sender: TObject);
  151. begin
  152.   Scaling1.Checked:= false;
  153.   Moving1.Checked:= true;
  154.   Drawing1.Checked:= false;
  155.   ScaleMode:= false;
  156.   DrawMode:= false;
  157.   ScGraph1.Cursor:= crDefault;
  158. end;
  159.  
  160. procedure TAxesForm.Drawing1Click(Sender: TObject);
  161. begin
  162.   Scaling1.Checked:= false;
  163.   Moving1.Checked:= false;
  164.   Drawing1.Checked:= true;
  165.   ScaleMode:= false;
  166.   DrawMode:= true;
  167.   ScGraph1.Cursor:= crCross;
  168. end;
  169.  
  170. procedure TAxesForm.ScGraph1MouseDown(Sender: TObject;
  171.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  172. begin
  173.   with ScGraph1 do
  174.   begin
  175.     XX1:= GetMouseX(X);  YY1:= GetMouseY(Y);
  176.     MinXX:= XScale.Min;  MaxXX:= XScale.Max;
  177.     MinYY:= YScale.Min;  MaxYY:= YScale.Max;
  178.     if DrawMode then AddPoint(2, XX1, YY1);
  179.   end;
  180. end;
  181.  
  182. procedure TAxesForm.ScGraph1MouseUp(Sender: TObject; Button: TMouseButton;
  183.   Shift: TShiftState; X, Y: Integer);
  184. begin
  185.   if not DrawMode then
  186.     with ScGraph1 do
  187.     begin
  188.       XX2:= GetMouseX(X);
  189.       YY2:= GetMouseY(Y);
  190.       if ScaleMode then
  191.       begin // change scales
  192.         XScale.Max:= XScale.Min + (XScale.Max - XScale.Min) /
  193.                          (XX2 - XScale.Min) * (XX1 - XScale.Min);
  194.         YScale.Max:= YScale.Min + (YScale.Max - YScale.Min) /
  195.                          (YY2 - YScale.Min) * (YY1 - YScale.Min);
  196.       end
  197.       else
  198.       begin // move graph
  199.         XScale.Min:= XScale.Min - XX2 + XX1;
  200.         XScale.Max:= XScale.Max - XX2 + XX1;
  201.         YScale.Min:= YScale.Min - YY2 + YY1;
  202.         YScale.Max:= YScale.Max - YY2 + YY1;;
  203.       end;
  204.     end;
  205. end;
  206.  
  207. procedure TAxesForm.ScGraph1MouseMove(Sender: TObject; Shift: TShiftState;
  208.   X, Y: Integer);
  209. begin
  210.   Label1.Caption := 'X= ' + FloatToStrF(ScGraph1.GetMouseX(X), ffGeneral, 3, 5);
  211.   Label2.Caption := 'Y= ' + FloatToStrF(ScGraph1.GetMouseY(Y), ffGeneral, 3, 5);
  212. end;
  213.  
  214. procedure TAxesForm.Autometrics1Click(Sender: TObject);
  215. begin
  216.   ScGraph1.Autometrics := ScGraph1.Autometrics xor true;
  217.   Autometrics1.Checked := ScGraph1.Autometrics;
  218. end;
  219.  
  220. procedure TAxesForm.Help1Click(Sender: TObject);
  221. begin
  222.   HelpForm.HelpMemo.Lines.Assign(AxesText);
  223.   HelpForm.ShowModal;
  224. end;
  225.  
  226. end.
  227.